# Q. What is this file?
# A. This file contains options which allow you to configure your multiworld experience while allowing
#    others to play how they want as well.
#
# Q. How do I use it?
# A. The options in this file are weighted. This means the higher number you assign to a value, the
#    more chances you have for that option to be chosen. For example, an option like this:
#
#    map_shuffle:
#      on: 5
#      off: 15
#
#    Means you have 5 chances for map shuffle to occur, and 15 chances for map shuffle to be turned
#    off.
#
# Q. I've never seen a file like this before. What characters am I allowed to use?
# A. This is a .yaml file. You are allowed to use most characters.
#    To test if your yaml is valid or not, you can use this website:
#        http://www.yamllint.com/
#    You can also verify that your MultiworldGG options are valid at this site:
#        https://multiworld.gg/check

# Your name in-game, limited to 16 characters.
#     {player} will be replaced with the player's slot number.
#     {PLAYER} will be replaced with the player's slot number, if that slot number is greater than 1.
#     {number} will be replaced with the counter value of the name.
#     {NUMBER} will be replaced with the counter value of the name, if the counter value is greater than 1.
name: Player{number}

# Used to describe your yaml. Useful if you have multiple files.
description: Default Pokemon Crystal Template

game: Pokemon Crystal
requires:
  version: 0.7.158 # Version of MultiworldGG required for this yaml to work as expected.

Pokemon Crystal:
  ################
  # Game Options #
  ################
  progression_balancing:
    # A system that can move progression earlier, to try and prevent the player from getting stuck and bored early.
    # 
    # A lower setting means more getting stuck. A higher setting means less getting stuck.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 99
    random: 0
    random-low: 0
    random-high: 0
    disabled: 0 # equivalent to 0
    normal: 50 # equivalent to 50
    extreme: 0 # equivalent to 99

  accessibility:
    # Set rules for reachability of your items/locations.
    # 
    # **Full:** ensure everything can be reached and acquired.
    # 
    # **Minimal:** ensure what is needed to reach your goal can be acquired.
    full: 50
    minimal: 0

  goal:
    # Elite Four: Defeat the Champion and enter the Hall of Fame
    # Red: Defeat Red at Mt. Silver
    elite_four: 50
    red: 0

  #######
  # Map #
  #######
  randomize_starting_town:
    # Randomly chooses a town to start in.
    # Any Pokemon Center except Indigo Plateau, Cinnabar Island and Silver Cave can be chosen.
    # Lake of Rage can also be chosen.
    # 
    # Other settings may additionally restrict which Pokemon Centers can be chosen.
    # 
    # WARNING: Some starting towns without level scaling may produce difficult starts.
    'false': 50
    'true': 0

  starting_town_blocklist:
    # Specify places which cannot be chosen as a starting town. If you block every valid option, this list will do
    # nothing.
    # Indigo Plateau, Cinnabar Island and Silver Cave cannot be chosen as starting towns and are not valid options
    # "_Johto" and "_Kanto" are shortcuts for all Johto and Kanto towns respectively
    []

  johto_only:
    # Excludes all of Kanto, disables Kanto access
    # Forces Goal to Elite Four unless Silver Cave is included
    # Goal badges will be limited to 8 if badges are shuffled or vanilla
    'off': 50
    'on': 0
    include_silver_cave: 0

  ##############
  # Roadblocks #
  ##############
  elite_four_requirement:
    # Sets the requirement to enter Victory Road
    badges: 50
    gyms: 0

  elite_four_count:
    # Sets the number of badges/gyms required to enter Victory Road
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 16
    8: 50
    random: 0
    random-low: 0
    random-high: 0

  red_requirement:
    # Sets the requirement to battle Red
    badges: 50
    gyms: 0

  red_count:
    # Number of badges/gyms required to battle Red
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 16
    16: 50
    random: 0
    random-low: 0
    random-high: 0

  mt_silver_requirement:
    # Sets the requirement to access Mt. Silver and Silver Cave
    badges: 50
    gyms: 0

  mt_silver_count:
    # Number of badges/gyms required to access Mt. Silver and Silver Cave
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 16
    16: 50
    random: 0
    random-low: 0
    random-high: 0

  radio_tower_requirement:
    # Sets the requirement for Team Rocket to take over the Goldenrod Radio Tower
    badges: 50
    gyms: 0

  radio_tower_count:
    # Number of badges/gyms at which Team Rocket takes over the Goldenrod Radio Tower
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 16
    7: 50
    random: 0
    random-low: 0
    random-high: 0

  route_44_access_requirement:
    # Sets the requirement to pass between Mahogany Town and Route 44
    badges: 50
    gyms: 0

  route_44_access_count:
    # Sets the number of badges/gyms required to pass between Mahogany Town and Route 44
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 16
    7: 50
    random: 0
    random-low: 0
    random-high: 0

  kanto_access_requirement:
    # Sets the requirement to pass between Victory Road gate and Kanto
    # Wake Snorlax: Wake the Snorlax outside of Diglett's Cave
    # Badges: Requires the number of badges specified by kanto_access_count
    # Gyms: Requires beating the number of gyms specified by kanto_access_count
    # Become Champion: Defeat Lance and enter the Hall of Fame
    # 
    # This setting does nothing if Johto Only is enabled
    wake_snorlax: 50
    badges: 0
    gyms: 0
    become_champion: 0

  kanto_access_count:
    # Sets the number of badges/gyms required to pass between Victory Road gate and Kanto
    # Only applies if Kanto Access Condition is set to badges or gyms
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 16
    8: 50
    random: 0
    random-low: 0
    random-high: 0

  route_32_condition:
    # Sets the condition required to pass between the north and south parts of Route 32
    # Egg from aide: Collect the Egg from the aide in the Violet City Pokemon Center after beating Falkner
    # Any badge: Obtain any badge
    # Any gym: Beat any gym
    # Zephyr Badge: Obtain the Zephyr Badge
    # None: No requirement
    egg_from_aide: 50
    any_badge: 0
    any_gym: 0
    zephyr_badge: 0
    none: 0

  route_2_access:
    # Sets the roadblock for moving between the west of Route 2 and Diglett's cave
    # Vanilla: Cut is required
    # Ledge: A ledge is added north of Diglett's cave allowing east -> west access without Cut
    # Open: No requirement
    vanilla: 0
    ledge: 50
    open: 0

  route_3_access:
    # Sets the roadblock for moving between Pewter City and Route 3
    # Vanilla: No requirement
    # Boulder Badge: The Boulder Badge is required to pass
    vanilla: 50
    boulder_badge: 0

  mount_mortar_access:
    # Sets the requirement to pass through Mount Mortar east <> west
    # Vanilla: No requirement
    # Rock Smash: Rock Smash is required
    vanilla: 50
    rock_smash: 0

  red_gyarados_access:
    # Sets whether the Red Gyarados requires Whirlpool to access
    vanilla: 50
    whirlpool: 0

  blackthorn_dark_cave_access:
    # Sets the roadblock for travelling from Route 31 to Blackthorn City through Dark Cave
    # Vanilla: Traversal is not possible
    # Waterfall: A waterfall is added to the Violet side of Dark Cave and a ledge is removed on the Blackthorn side,
    # allowing passage with Flash, Surf and Waterfall
    vanilla: 50
    waterfall: 0

  national_park_access:
    # Sets the requirement to enter National Park
    # Vanilla: No requirement
    # Bicycle: The Bicycle is required
    vanilla: 50
    bicycle: 0

  saffron_gatehouse_tea:
    # Sets which Saffron City gatehouses require Tea to pass. Obtaining the Tea will unlock them all.
    # If any gatehouses are enabled, adds a new location in Celadon Mansion 1F and adds Tea to the item pool.
    # Valid options are: North, East, South, West, and _Random in any combination.
    # _Random gives each gate that is not already included a 50% chance to be included.
    []

  remove_ilex_cut_tree:
    # Removes the Cut tree in Ilex Forest
    'false': 0
    'true': 50

  undergrounds_require_power:
    # Specifies which of the Kanto Underground Passes require the Machine Part to be returned to access.
    both: 50
    north_south: 0
    east_west: 0
    neither: 0

  east_west_underground:
    # Adds an Underground Pass between Route 7 and Route 8 in Kanto.
    'false': 50
    'true': 0

  vanilla_clair:
    # Clair refuses to give you the Rising Badge until you prove your worth
    # to the Elders in the Dragon's Den Shrine, which requires Whirlpool to access.
    'false': 50
    'true': 0

  #########
  # Items #
  #########
  randomize_badges:
    # Shuffles gym badge locations into the pool
    # Vanilla: Does not randomize gym badges
    # Shuffle: Randomizes gym badges between gym leaders
    # Completely Random: Randomizes badges with all other items
    vanilla: 0
    shuffle: 0
    completely_random: 50

  randomize_pokegear:
    # Shuffles the Pokegear and cards into the pool
    'false': 50
    'true': 0

  randomize_hidden_items:
    # Shuffles hidden item locations into the pool
    'false': 50
    'true': 0

  randomize_berry_trees:
    # Shuffles berry tree locations into the pool
    'false': 50
    'true': 0

  randomize_pokemon_requests:
    # Shuffles the items given by Bill's Grandpa after showing him specific Pokemon into the pool
    # Optionally also randomizes the requested Pokemon
    'off': 50
    items: 0
    pokemon: 0
    items_and_pokemon: 0

  randomize_fly_unlocks:
    # Shuffles Fly destination unlocks into the pool
    # 
    # Indigo Plateau is not included.
    'off': 50
    'on': 0
    exclude_silver_cave: 0

  require_itemfinder:
    # Hidden items require Itemfinder in logic
    # 
    # Not Required: Hidden items do not require the Itemfinder at all
    # Logically Required: Hidden items will expect you to have Itemfinder for logic but can be picked up without it
    # Hard Required: Hidden items cannot be picked up without the Itemfinder
    not_required: 0
    logically_required: 50
    hard_required: 0

  remote_items:
    # Instead of placing your own items directly into the ROM, all items are received from the server, including items you find for yourself.
    # This enables co-op of a single slot and recovering more items after a lost save file (if you're so unlucky).
    # But it changes pickup behavior slightly and requires connection to the server to receive any items.
    'false': 50
    'true': 0

  ##############
  # Shopsanity #
  ##############
  shopsanity:
    # Adds shop purchases as locations, items in shops are added to the item pool
    # - Johto Marts: Adds Johto Poke Marts, including the Goldenrod Dept. Store.
    # - Kanto Marts: Adds Kanto Poke Marts, including the Celadon Dept. Store.
    # - Blue Card: Adds the Blue Card prize shop, accessing this shop requires the Blue Card and buying items requires
    # points. Five Blue Card Points are added to the item pool. Points are not spent when purchasing.
    # - Game Corners: The Game Corner TM shops are added.
    # - Apricorns: Kurt's Apricorn Ball shop is added, each slot requires a different Apricorn. Apricorns are progression.
    # 
    # IMPORTANT NOTE: There is a non-randomized shop on Pokecenter 2F, you can always buy Poke Balls, Potions, Escape
    # Ropes and Repels there.
    []

  shopsanity_prices:
    # Sets how shop item prices are determined when Shopsanity is enabled
    # - Vanilla: Shop prices are unchanged
    # - Item Price: Shop prices are determined by the value of the item being sold
    # - Spheres: Shop prices are determined by sphere access
    # - Classification: Shop prices are determined by item classifications (Progression, Useful, Filler/Trap)
    # - Spheres and Classifications: Shop prices are determined by both sphere access and item classifications
    # - Completely Random: Shop prices will be completely random
    vanilla: 50
    item_price: 0
    spheres: 0
    classification: 0
    spheres_and_classification: 0
    completely_random: 0

  shopsanity_minimum_price:
    # Sets the minimum cost of shop items when Shopsanity is enabled
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 10000
    100: 50
    random: 0
    random-low: 0
    random-high: 0

  shopsanity_maximum_price:
    # Sets the maximum cost of shop items when Shopsanity is enabled
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 10000
    3000: 50
    random: 0
    random-low: 0
    random-high: 0

  provide_shop_hints:
    # Sends out hints when a randomized shop is accessed
    'off': 50
    progression: 0
    progression_and_useful: 0
    all: 0

  shopsanity_restrict_rare_candies:
    # Makes Rare Candies in shops only purchasable once
    'false': 50
    'true': 0

  #######
  # HMs #
  #######
  hm_compatibility:
    # Percent chance for Pokemon to be compatible with each HM
    # Headbutt and Rock Smash are considered HMs when applying compatibility
    # 
    # Minimal compatibility will ensure only the minimum required number of Pokemon can learn each HM, usually one
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    random: 0
    random-low: 0
    random-high: 0
    vanilla: 50 # equivalent to -1
    minimal: 0 # equivalent to 0
    fully_compatible: 0 # equivalent to 100

  hm_badge_requirements:
    # Vanilla: HMs require their vanilla badges
    # No Badges: HMs do not require a badge to use
    # Add Kanto: HMs can be used with the Johto or Kanto badge
    # Regional: HMs can be used in Johto with the Johto badge or in Kanto with the Kanto badge
    #     This does not apply to Fly which will accept either badge
    #     Routes 26, 27, 28 and Tohjo Falls are in Johto for HM purposes
    vanilla: 50
    no_badges: 0
    add_kanto: 0
    regional: 0

  remove_badge_requirement:
    # Specify which HMs do not require a badge to use. This overrides the HM Badge Requirements setting.
    # 
    # HMs should be provided in the form: "Fly".
    []

  free_fly_location:
    # Free Fly: Unlocks a random Fly destination when Fly is obtained.
    # Free Fly and Map Card: Additionally unlocks a random Fly destination after obtaining both the Pokegear and Map Card.
    # Map Card: Unlocks a single random Fly destination only after obtaining both the Pokegear and Map card.
    # 
    # Indigo Plateau cannot be chosen as a free Fly location.
    'off': 50
    free_fly: 0
    free_fly_and_map_card: 0
    map_card: 0

  free_fly_blocklist:
    # These locations won't be given to you as fly locations, either as your free one or from receiving the map card.
    # Locations should be provided in the form: "Ecruteak City"
    # Indigo Plateau cannot be chosen as a free fly location and is not a valid option
    # If you blocklist enough locations that there aren't enough locations left for your total number of free fly locations, the blocklist will simply do nothing
    # "_Johto" and "_Kanto" are shortcuts for all Johto and Kanto towns respectively
    []

  early_fly:
    # HM02 Fly will be placed early in the game
    # If this option is enabled, you will be able to Fly before being forced to use an item to progress
    # Early Fly is a best effort setting, if Fly and its badge cannot be placed early, then they will be placed
    #     randomly
    'false': 50
    'true': 0

  fly_cheese:
    # Determines whether the Vermilion and Mahogany Fly unlocks can be accessed from behind Snorlax and the
    # Ragecandybar salesman respectively
    # - Out of logic allows access but does not consider them in logic
    # - Disallow prevents access to Fly unlocks beyond the roadblocks
    # - In logic allows access and considers them in logic
    out_of_logic: 50
    disallow: 0
    in_logic: 0

  ###########
  # Pokemon #
  ###########
  randomize_wilds:
    # Randomizes species of wild Pokemon
    # 
    # Base Forms: Ensures that at least every Pokemon that cannot be obtained through evolution is available in the wild
    # Evolution Lines: Ensures that at least one Pokemon from each evolutionary line can be obtained in the wild
    # Catch 'em All: Ensures that every Pokemon will be obtainable in the wild
    vanilla: 50
    completely_random: 0
    base_forms: 0
    evolution_lines: 0
    catch_em_all: 0

  wild_encounter_blocklist:
    # These Pokemon will not appear in the wild
    # Does nothing if wild Pokemon are not randomized
    # You can use "_Legendaries" as a shortcut for all legendary Pokemon
    # Blocklists are best effort, other constraints may cause them to be ignored
    []

  randomize_static_pokemon:
    # Randomizes species of static Pokemon encounters
    # This includes overworld Pokemon, gift Pokemon and gift egg Pokemon
    'false': 50
    'true': 0

  static_blocklist:
    # These Pokemon will not appear as static overworld encounters, gift eggs or gift Pokemon
    # Does nothing if static Pokemon are not randomized
    # You can use "_Legendaries" as a shortcut for all legendary Pokemon
    # Blocklists are best effort, other constraints may cause them to be ignored
    []

  randomize_base_stats:
    # Vanilla: Vanilla base stats
    # Keep BST: Random base stats, but base stat total is preserved
    # Completely Random: Base stats and BST are completely random
    vanilla: 50
    keep_bst: 0
    completely_random: 0

  randomize_types:
    # Vanilla: Vanilla Pokemon types
    # Follow Evolutions: Types are randomized but preserved when evolved
    # Completely Random: Types are completely random
    vanilla: 50
    follow_evolutions: 0
    completely_random: 0

  randomize_evolution:
    # - Vanilla: Pokemon evolve into the same Pokemon they do in vanilla
    # - Match a Type: Pokemon evolve into a random Pokemon with a higher base stat total, that shares at least one type with it.
    # - Increase BST: Pokemon evolve into a random Pokemon with a higher base stat total.
    # 
    # Note: This also affects breeding, when generating an egg the game will follow the evolution path backwards to
    # the base form. If the evolution path splits then the Pokemon with the lower ID will be selected.
    # 
    # Note: If random BST, random types, or the evolution blocklist cause a Pokemon to have no valid evolution within
    # your chosen setting here, it will evolve into the closest available thing to a valid evolution.
    # 
    # Note: All Pokemon will be standardized to the medium-fast EXP curve when any evolution randomization is enabled.
    vanilla: 50
    match_a_type: 0
    increase_bst: 0

  evolution_blocklist:
    # No Pokemon will evolve into these Pokemon. Does nothing if evolution is not randomized.
    # You can use "_Legendaries" as a shortcut for all legendary Pokemon.
    # Beware that this blocklist will not be ignored even if it would cause odd evolutions.
    []

  randomize_trades:
    # Randomizes species of in-game trades
    vanilla: 50
    received: 0
    requested: 0
    both: 0

  encounter_grouping:
    # Determines how randomized wild Pokemon are grouped in encounter tables.
    # 
    # - All Split: Each encounter area will have each slot randomized separately. For example, grass areas will have seven
    # randomized encounter slots.
    # - One to One: Each encounter area will retain its vanilla slot grouping. For example, if an area has two encounters
    # in vanilla, it will be randomized as two slots.
    # - One per Method: Each encounter method on a route will be treated as a single slot. For example, the grass on a route
    # will contain only a single encounter. Each rod is a separate encounter.
    # 
    # This setting has no effect if wild Pokemon are not randomized.
    all_split: 50
    one_to_one: 0
    one_per_method: 0

  encounter_slot_distribution:
    # Sets how the Pokemon encounter slots in an area are distributed.
    # 
    # Remove 1%'s modifies grass/cave encounters to 30%/25%/20%/10%/5%/5%/5% and does not modify any others.
    # Balanced sets the following:
    #     Grass/Cave: 20%/20%/15%/15%/10%/10%/10%
    #     Headbutt:  20%/20%/20%/15%/15%/10%
    #     Rock Smash: 70%/30%
    #     Fishing (vanilla):
    #         Old Rod: 70%/15%/15%
    #         Good Rod: 35%/35%/20%/10%
    #         Super Rod: 40%/30%/20%/10%
    # Equal sets all encounter slots to have (almost) equal probability.
    vanilla: 0
    remove_one_percents: 50
    balanced: 0
    equal: 0

  ############
  # Starters #
  ############
  randomize_starters:
    # Randomizes species of starter Pokemon
    vanilla: 50
    unevolved_only: 0
    completely_random: 0
    first_stage_can_evolve: 0
    base_stat_mode: 0

  starters_bst_average:
    # If you chose Base Stat Mode for your starters, what is the average base stat total you want your available starters to be?
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 195
    # Maximum value is 680
    random: 0
    random-low: 0
    random-high: 0
    normal_starters: 50 # equivalent to 310

  starter_blocklist:
    # These Pokemon will not be chosen as starter Pokemon
    # Does nothing if starter Pokemon are not randomized
    # You can use "_Legendaries" as a shortcut for all legendary Pokemon
    # Blocklists are best effort, other constraints may cause them to be ignored
    []

  #########
  # Moves #
  #########
  randomize_learnsets:
    # Vanilla: Vanilla learnsets
    # Randomize: Random learnsets
    # Start With Four Moves: Random learnsets with 4 starting moves
    vanilla: 50
    randomize: 0
    start_with_four_moves: 0

  learnset_type_bias:
    # This option will have an effect only if Randomize Learnset option is enabled.
    # 
    # Percent chance of each move in a Pokemon's learnset to match its type.
    # Default value is -1. This means there will be no check in logic for type matches.
    # The lowest possible type matching value is 0. There will be no STAB moves in a Pokemon's learnset
    # If set to 100 all moves that a Pokemon will learn by leveling up will match one of its types
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is -1
    # Maximum value is 100
    random: 0
    random-low: 0
    random-high: 0
    vanilla: 50 # equivalent to -1

  metronome_only:
    # Only Metronome is usable in battle, PP is infinite
    # You can still teach HMs and useful TMs
    'false': 50
    'true': 0

  randomize_move_types:
    # Randomizes each move's Type
    'false': 50
    'true': 0

  randomize_move_values:
    # Restricted: Generates values based on vanilla move values
    # Multiplies the power of each move with a random number between 0.5 and 1.5
    # Adds or subtracts 0, 5 or 10 from original PP | Min 5, Max 40
    # 
    # Full Exclude Accuracy: Fully randomizes move Power and PP
    # Randomizes each move's Power [20-150], PP [5-40] linearly. All possible values have the same weight.
    # Multi-hit moves have their power divided by their average hit count.
    # 
    # Full: Previous + also randomizes accuracy.
    # Accuracy has a flat chance of 70% to be 100%, if not it is linearly distributed between 30-100.
    # Does not randomize accuracy of OHKO moves, status moves (e.g. Toxic) and unique damage moves (e.g. Seismic Toss)
    vanilla: 50
    restricted: 0
    full_exclude_accuracy: 0
    full: 0

  hm_power_cap:
    # Lowers the power of damaging HM moves that exceed the set power down to match it.
    # Headbutt and Rock Smash are considered HMs for this setting.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 20
    # Maximum value is 255
    random: 0
    random-low: 0
    random-high: 0
    none: 50 # equivalent to 255

  randomize_tm_moves:
    # Randomizes the moves available as TMs
    'false': 50
    'true': 0

  tm_compatibility:
    # Percent chance for Pokemon to be compatible with each TM
    # Headbutt and Rock Smash are considered HMs when applying compatibility
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    random: 0
    random-low: 0
    random-high: 0
    vanilla: 50 # equivalent to -1
    none: 0 # equivalent to 0
    fully_compatible: 0 # equivalent to 100

  reusable_tms:
    # TMs can be used an infinite number of times
    'false': 50
    'true': 0

  move_blocklist:
    # Pokemon won't learn these moves via learnsets.
    # Moves should be provided in the form: "Ice Beam"
    # Does not apply to vanilla learnsets
    []

  tm_blocklist:
    # No TM will contain these moves.
    # Moves should be provided in the form: "Ice Beam"
    # Does not apply to vanilla TMs
    []

  ############
  # Trainers #
  ############
  randomize_trainer_parties:
    # Randomizes Pokemon in enemy trainer parties
    vanilla: 50
    match_types: 0
    completely_random: 0

  trainer_party_blocklist:
    # These Pokemon will not appear in enemy trainer parties
    # Does nothing if trainer parties are not randomized
    # You can use "_Legendaries" as a shortcut for all legendary Pokemon
    # Blocklists are best effort, other constraints may cause them to be ignored
    []

  boost_trainers:
    # Boost levels of every trainer's Pokemon. There are 2 different boost modes:
    # Percentage Boost: Increases every trainer Pokemon's level by the boost percentage.
    # Set Min Level: Trainer Pokemon will be the specified level or higher.
    vanilla: 50
    percentage_boost: 0
    set_min_level: 0

  trainer_level_boost:
    # This Value only works if Boost Trainer Pokemon Levels is being used.
    # The meaning of this value depends on Trainer Boost Mode.
    # 
    # Percentage Boost: This value represents the boost amount percentage
    # Set Min Level: Trainer Pokemon will never be lower than this level
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 100
    1: 50
    random: 0
    random-low: 0
    random-high: 0

  force_fully_evolved:
    # When an opponent uses a Pokemon of the specified level or higher, restricts the species to only fully evolved Pokemon.
    # 
    # Only applies when trainer parties are randomized.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 100
    random: 0
    random-low: 0
    random-high: 0
    disabled: 50 # equivalent to 0

  ###############
  # Dexsanities #
  ###############
  dexsanity:
    # Adds checks for catching Pokemon
    # Pokemon that cannot be logically obtained will never be included
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 251
    random: 0
    random-low: 0
    random-high: 0
    none: 50 # equivalent to 0
    full: 0 # equivalent to 251

  dexcountsanity:
    # Adds checks for completing Pokedex milestones
    # This setting specifies number of caught Pokemon on which you'll get your last check
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 251
    random: 0
    random-low: 0
    random-high: 0
    none: 50 # equivalent to 0
    full: 0 # equivalent to 251

  dexcountsanity_step:
    # If Dexcountsanity is enabled, specifies the step interval at which your checks are placed.
    # For example, if you have Dexcountsanity 50 and Dexcountsanity Step 10, you will have checks at
    # 10, 20, 30, 40 and 50 total Pokemon caught.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 251
    1: 50
    random: 0
    random-low: 0
    random-high: 0

  dexcountsanity_leniency:
    # If Dexcountsanity is enabled, specifies the logic leniency for checks.
    # For example, if you set Dexcountsanity Leniency to 5 and have a Dexcountsanity check at 10, you will not be
    # logically required to obtain this check until you can obtain 15 Pokemon
    # 
    # Checks that would go over the total number of logically available Pokemon will be clamped to that limit
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 251
    0: 50
    random: 0
    random-low: 0
    random-high: 0

  dexsanity_starters:
    # Controls how Dexsanity treats starter Pokemon
    # Allow: Starter Pokemon will be allowed as Dexsanity checks
    # Block: Starter Pokemon will not be allowed as Dexsanity Checks
    # Available Early: Starter Pokemon will all be obtainable in the wild immediately, unless there is nowhere to obtain
    # wild Pokemon immediately
    allow: 50
    block: 0
    available_early: 0

  #################
  # Trainersanity #
  #################
  johto_trainersanity:
    # Adds checks for defeating Johto trainers.
    # 
    # You can turn trainers that have checks grayscale by setting the "trainersanity_indication" in-game option.
    # 
    # Trainers are no longer missable. Each trainer will add a random filler item into the pool.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 223
    random: 0
    random-low: 0
    random-high: 0
    none: 50 # equivalent to 0
    full: 0 # equivalent to 223

  kanto_trainersanity:
    # Adds checks for defeating Kanto trainers.
    # 
    # You can turn trainers that have checks grayscale by setting the "trainersanity_indication" in-game option.
    # 
    # Trainers are no longer missable. Each trainer will add a random filler item into the pool.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 119
    random: 0
    random-low: 0
    random-high: 0
    none: 50 # equivalent to 0
    full: 0 # equivalent to 119

  trainersanity_alerts:
    # Shows a message box or plays a sound for Trainersanity checks
    # Does not apply to some trainers with special handling
    no_alerts: 0
    message_box: 50
    sound_only: 0

  #################
  # Pokemon Logic #
  #################
  wild_encounter_methods_required:
    # Sets which wild encounter types may be logically required
    # 
    # Swarms and roamers are NEVER in logic
    ['Land', 'Surfing', 'Fishing', 'Headbutt', 'Rock Smash']

  enforce_wild_encounter_methods_logic:
    # Sets whether the game will prevent capture of Pokemon found through disabled wild encounter methods
    # Statics and roamers can always be caught
    # 
    # You can always re-catch Pokemon you have already caught
    'false': 50
    'true': 0

  static_pokemon_required:
    # Sets whether static Pokemon may be logically required
    'false': 0
    'true': 50

  evolution_methods_required:
    # Sets which types of evolutions may be logically required
    ['Level', 'Level Tyrogue', 'Use Item', 'Happiness']

  evolution_gym_levels:
    # Sets how many levels each beaten gym puts into logic for level (and Tyrogue) evolutions
    # 
    # For example, if you set this to 4 and have beaten 5 gyms, evolutions up to level 20 would be in logic.
    # 
    # If Johto only is enabled the minimum for this setting is 8.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 4
    # Maximum value is 69
    8: 50
    random: 0
    random-low: 0
    random-high: 0

  breeding_methods_required:
    # Specifies which breeding methods may be logically required.
    none: 0
    with_ditto: 50
    any: 0

  #########
  # Traps #
  #########
  phone_trap_weight:
    # Adds random Pokegear calls that acts as traps
    # Weight is the percentage chance each filler item is replaced with a trap
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    0: 50
    random: 0
    random-low: 0
    random-high: 0

  sleep_trap_weight:
    # Trap that causes Sleep status on your party
    # Weight is the percentage chance each filler item is replaced with a trap
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    0: 50
    random: 0
    random-low: 0
    random-high: 0

  poison_trap_weight:
    # Trap that causes Poison status on your party
    # Weight is the percentage chance each filler item is replaced with a trap
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    0: 50
    random: 0
    random-low: 0
    random-high: 0

  burn_trap_weight:
    # Trap that causes Burn status on your party
    # Weight is the percentage chance each filler item is replaced with a trap
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    0: 50
    random: 0
    random-low: 0
    random-high: 0

  freeze_trap_weight:
    # Trap that causes Freeze status on your party
    # Weight is the percentage chance each filler item is replaced with a trap
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    0: 50
    random: 0
    random-low: 0
    random-high: 0

  paralysis_trap_weight:
    # Trap that causes Paralysis status on your party
    # Weight is the percentage chance each filler item is replaced with a trap
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    0: 50
    random: 0
    random-low: 0
    random-high: 0

  ###################
  # Quality of Life #
  ###################
  game_options:
    # Presets in-game options. These can be changed in-game later. Any omitted options will use their default.
    # 
    # Allowed options and values, with default first:
    # 
    # ap_item_sound: on/off - Sets whether a sound is played when a remote item is received
    # auto_run: off/on - Sets whether run activates automatically, if on you can hold B to walk
    # battle_animations: all/no_scene/no_bars/speedy - Sets which battle animations are played:
    #     all: All animations play, including entry and moves
    #     no_scene: Entry and move animations do not play
    #     no_bars: Entry, move and HP/EXP bar animations do not play
    #     speedy: No battle animations play and many delays are removed to make battles faster
    # battle_move_stats: off/on - Sets whether or not to display power and accuracy of moves in battle
    # battle_shift: shift/set - Sets whether you are asked to switch between trainer Pokemon
    # bike_music: on/off - Sets whether the bike music will play
    # blind_trainers: off/on - Sets whether trainers will see you without talking to them directly
    # catch_exp: off/on - Sets whether or not you get EXP for catching a Pokemon
    # dex_area_beep: off/on - Sets whether the Pokedex beeps for land and Surf encounters in the current area
    # exp_distribution: gen2/gen6/gen8/no_exp - Sets the EXP distribution method:
    #     gen2: EXP is split evenly among battle participants, EXP Share splits evenly between participants and non-participants
    #     gen6: Participants earn 100% of EXP, non-participants earn 50% of EXP when EXP Share is enabled
    #     gen8: Participants earn 100% of EXP, non-participants earn 100% of EXP when EXP Share is enabled
    #     no_exp: EXP is disabled
    # fast_egg_hatch: off/on - Sets whether eggs take a single cycle to hatch
    # fast_egg_make: off/on - Sets whether eggs are guaranteed after one cycle at the day care
    # guaranteed_catch: off/on - Sets whether balls have a 100% success rate
    # low_hp_beep: on/off - Sets whether the low HP beep is played in battle
    # menu_account: on/off - Sets whether your start menu selection is remembered
    # poison_flicker: on/off - Sets whether the overworld poison flash effect is played
    # rods_always_work: off/on - Sets whether the fishing rods always succeed
    # short_fanfares: off/on - Sets whether item receive fanfares are shortened
    # skip_dex_registration: off/on - Sets whether the Pokedex registration screen is skipped
    # skip_nicknames: off/on - Sets whether you are asked to nickname a Pokemon upon receiving it
    # sound: mono/stereo - Sets the sound mode
    # spinners: normal/rotators - Sets whether trainers with random spin are turned into consistent rotators
    # surf_music: on/off - Sets whether the surf music will play
    # text_frame: 1-8 - Sets the textbox frame, "random" will pick a random frame
    # text_speed: mid/slow/fast/instant - Sets the speed at which text advances
    # time_of_day: auto/morn/day/nite - Sets a time of day override, auto follows the clock, "random" will pick a random time
    # trainersanity_indication - Sets whether Trainersanity trainers have grayscale sprites until they are beaten
    # turbo_button: none/a/b/a_or_b - Sets which buttons auto advance text when held
    ap_item_sound: 'on'
    auto_run: 'off'
    battle_animations: all
    battle_move_stats: 'off'
    battle_shift: shift
    bike_music: 'on'
    blind_trainers: 'off'
    catch_exp: 'off'
    dex_area_beep: 'off'
    exp_distribution: gen2
    fast_egg_hatch: 'off'
    fast_egg_make: 'off'
    guaranteed_catch: 'off'
    low_hp_beep: 'on'
    menu_account: 'on'
    poison_flicker: 'on'
    rods_always_work: 'off'
    short_fanfares: 'off'
    skip_dex_registration: 'off'
    skip_nicknames: 'off'
    sound: mono
    spinners: normal
    surf_music: 'on'
    text_frame: 1
    text_speed: mid
    time_of_day: auto
    trainersanity_indication: 'off'
    turbo_button: none

  level_scaling:
    # Sets whether Trainer, Wild Pokemon and Static Pokemon levels are scaled based on sphere access.
    # 
    # - Off: Vanilla levels are used.
    # - Spheres: Levels are scaled based on sphere access only.
    # - Spheres and Distance: Levels are scaled based on both sphere access and distance from starting town.
    'off': 50
    spheres: 0
    spheres_and_distance: 0

  all_pokemon_seen:
    # Start with all Pokemon seen in your Pokedex.
    # This allows you to see where the Pokemon can be encountered in the wild.
    'false': 50
    'true': 0

  starting_money:
    # Sets your starting money.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 999999
    random: 0
    random-low: 0
    random-high: 0
    vanilla: 50 # equivalent to 3000

  better_marts:
    # Improves the selection of items at Pokemarts
    'false': 50
    'true': 0

  experience_modifier:
    # Scale the amount of Experience Points given in battle
    # Default is 20, for double set to 40, for half set to 10, etc
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 255
    random: 0
    random-low: 0
    random-high: 0
    half: 0 # equivalent to 10
    normal: 50 # equivalent to 20
    double: 0 # equivalent to 40
    triple: 0 # equivalent to 60
    quadruple: 0 # equivalent to 80
    quintuple: 0 # equivalent to 100
    sextuple: 0 # equivalent to 120
    septuple: 0 # equivalent to 140
    octuple: 0 # equivalent to 160

  skip_elite_four:
    # Go straight to Lance when challenging the Elite Four
    'false': 50
    'true': 0

  minimum_catch_rate:
    # Sets a minimum catch rate for wild Pokemon
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 255
    0: 50
    random: 0
    random-low: 0
    random-high: 0

  death_link:
    # When you die, everyone who enabled death link dies. Of course, the reverse is true too.
    # 
    # In Pokemon Crystal, whiting out sends a death and receiving a death causes you to white out.
    'false': 50
    'true': 0

  ############
  # Cosmetic #
  ############
  randomize_palettes:
    # Vanilla: Vanilla Pokemon color palettes
    # Match Types: Color palettes match Pokemon Type
    # Completely Random: Color palettes are completely random
    vanilla: 50
    match_types: 0
    completely_random: 0

  randomize_music:
    # Randomize all music
    # - Shuffle will map each music track to a new track
    # - Completely Random will map each music area to a new track
    'off': 50
    shuffle: 0
    completely_random: 0

  ######
  # :3 #
  ######
  enable_mischief:
    # If I told you what this does, it would ruin the surprises :)
    'false': 50
    'true': 0

  ###########################
  # Item & Location Options #
  ###########################
  local_items:
    # Forces these items to be in their native world.
    []

  non_local_items:
    # Forces these items to be outside their native world.
    []

  start_inventory:
    # Start with these items.
    {}

  start_inventory_from_pool:
    # Start with these items and don't place them in the world.
    # 
    # The game decides what the replacement items will be.
    {}

  start_hints:
    # Start with these item's locations prefilled into the ``!hint`` command.
    []

  start_location_hints:
    # Start with these locations and their item prefilled into the ``!hint`` command.
    []

  exclude_locations:
    # Prevent these locations from having an important item.
    []

  priority_locations:
    # Prevent these locations from having an unimportant item.
    []

  item_links:
    # Share part of your item pool with other players.
    []

  plando_items:
    # Generic items plando.
    []
